package com.news.service;

import com.news.model.News;
import com.news.model.Sort;

import java.util.List;

public interface NewsService {
    // 获取推荐新闻
    List<News> getRecommendNews(int sortId);
    
    // 获取要闻聚焦新闻
    List<News> getFocusNews(int sortId);
    
    // 获取深度观察新闻
    List<News> getDeepNews(int sortId);
    
    // 获取新闻列表
    List<News> getNewsList(int sortId, int limit);
    
    // 获取热门新闻
    List<News> getHotNews(int sortId);
    
    // 根据ID获取新闻详情
    News getNewsById(int newsId);
    
    // 获取相关新闻
    List<News> getRelatedNews(int sortId, int currentNewsId);
    
    // 搜索新闻
    List<News> searchNews(String keyword);
    
    // 获取新闻总数（支持搜索）
    int getNewsCount(String keyword);
    
    // 分页获取新闻列表（支持搜索）
    List<News> getNewsByPage(int page, int pageSize, String keyword);
    
    // 获取所有分类
    List<Sort> getAllSorts();
    
    // 添加新闻
    boolean addNews(News news, String imagePath);
    
    // 更新新闻
    boolean updateNews(News news, String imagePath, boolean removeImage);
    
    // 删除新闻
    boolean deleteNews(int newsId);
    
    // 获取新闻总数
    int getTotalNewsCount();
    
    // 获取用户总数
    int getTotalUserCount();
    
    // 获取分类总数
    int getTotalSortCount();
    
    // 获取分类列表
    List<Sort> getSortsByPage(int page, int pageSize);
    
    // 获取分类新闻数量
    int getNewsBySortId(int sortId);
    
    // 删除分类
    boolean deleteSort(int sortId);
    
    // 根据ID获取分类
    Sort getSortById(int sortId);
    
    // 添加分类
    boolean addSort(Sort sort);
    
    // 更新分类
    boolean updateSort(Sort sort);
    
    /**
     * 搜索分类并分页
     * @param keyword 关键词
     * @param currentPage 当前页码
     * @param pageSize 每页大小
     * @return 分类列表
     */
    List<Sort> searchSortsByPage(String keyword, int currentPage, int pageSize);
    
    /**
     * 获取搜索结果的总数
     * @param keyword 关键词
     * @return 分类总数
     */
    int getTotalSearchSortCount(String keyword);
} 